package com.shenmazong.serveruserapi.task;

import com.shenmazong.TbNo;
import com.shenmazong.serveruserapi.service.TbNoService;
import com.shenmazong.serveruserapi.util.ConstUtil;
import com.shenmazong.serveruserapi.util.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author 田不平
 * @project server-xingxing
 * @date 2020/8/14 9:23 AM
 * http://www.shenmazong.com
 */
@Component
@EnableScheduling
@Slf4j
public class UserIdTask {

    @Autowired
    private TbNoService tbNoService;

    @Resource
    private RedisUtil redisUtil;

    /**
     * 定时检查用户ID储备
     */
    @Scheduled(fixedRate = 5000)
    public void checkUserNoTask() {

//        log.info("checkUserNoTask...");
//        //--1 检查数据库
//        if(tbNoService.getFreeUserNoCount() > 100) {
//            return;
//        }
//
//        //--2 生产ID
//        Integer maxUserNo = tbNoService.getMaxUserNo();
//        if(maxUserNo == 0) {
//            maxUserNo = 100000;
//        }
//
//        for (int idx = 0; idx < 200; idx++) {
//            tbNoService.addUserNo(maxUserNo+idx+1);
//        }
    }

    @Scheduled(fixedRate = 5000)
    public void checkUserNoTaskForRedis() {

//        log.info("checkUserNoTaskForRedis...");
//        //--1 检查redis中编号数量
//        long count = redisUtil.lGetListSize(ConstUtil.QUEUE_USER_NO);
//        if(count > 10) {
//            return;
//        }
//
//        List<TbNo> freeUserNo = tbNoService.getFreeUserNo();
//        if(freeUserNo != null) {
//            for (TbNo no : freeUserNo) {
//                redisUtil.lPush(ConstUtil.QUEUE_USER_NO, freeUserNo);
//            }
//        }
    }
}
